package mm.util;

import java.util.Hashtable;
import java.util.Map;

import mm.http.SystemListener;

/**
 * @author Admin
 *
 * For lazy loading
 */
public class Cache {
	
	private static Map<String, Object> map=new Hashtable<String, Object>();
//
//	public static <T> T get(String key, T defaultContent) {
//		if(SystemListener.isDebugging())
//			return defaultContent;
//		if(!map.containsKey(key)){
//			if(defaultContent!=null){
//				map.put(key, defaultContent);
//				return defaultContent;
//			}else{
//				return null;
//			}
//		}else{
//			return (T) map.get(key);
//		}
//	}

	@SuppressWarnings("unchecked")
	public static <T> T get(String key, CacheCallBack<T> cacheCallBack) {
		if(SystemListener.isDebugging()){
			T t=cacheCallBack.get();
			LOG.debug("Reading from cache: "+t);
			return t;
		}
		if(!map.containsKey(key)){
			T defaultContent = cacheCallBack.get();
			map.put(key, defaultContent);
			return defaultContent;
		}else{
			return (T) map.get(key);
		}
	}

}
